Skip to content

Conversation

@pmenzel
Copy link
Collaborator

@pmenzel Paul Menzel (pmenzel) commented Oct 13, 2026 •

AI disclaimer: This merge/pull request was generated by claude-opus-5.5 and reviewed by Paul Menzel (@pmenzel).

Tested on maleficent (amdgpu), theinternet (Nvidia) and sigusr2 (Nvidia). Sound, microphone and video all work.

Add the COSMIC desktop environment (epoch 1.9.0) with one recipe per component, plus the libraries and tools it needs.

  • Dependencies: mtdev 1.1.5 → 1.1.7, libwacom 0.25 → 2.20.0, libinput 1.32.0, seatd 0.9.3 (libseat via logind), PipeWire 1.6.9, WirePlumber 0.5.18, Xwayland 24.1.13, dav1d 1.5.4, just 1.58.0, xdg-desktop-portal 1.22.1.
  • COSMIC 1.9.0: comp, session, settings-daemon, randr, icons, idle, applets, panel, bg, osd, screenshot, settings, xdg-desktop-portal-cosmic, notifications, workspaces, pop-launcher, files, term, edit, player, app-library, launcher, wallpapers.

The crates of every Rust component come from a second tarball on beehive with the output of cargo vendor --locked --versioned-dirs, so cargo runs with --frozen and the builds need no network access. The recipes use upstream’s own just build-release and just install (make install for the Makefile-based components).

Notes:

  • libwacom’s soname changes from libwacom.so.2 to libwacom.so.9. /usr/lib/gnome-settings-daemon-3.0/libgsdwacom.so links the old one.
  • PipeWire is not the sound server; the systemd user units of PipeWire, WirePlumber and the portals are installed but not enabled (upstream defaults).
  • LightDM is configured with sessions-directory=/usr/share/xsessions, so it does not offer /usr/share/wayland-sessions/cosmic.desktop. That, and enabling the user units, belongs into mxtools, and is not part of this pull request; see Test without changing LightDM below.

Build

All 33 bee-files were built in one chain with scripts/bee-mxqsub (log /scratch/tmp/cosmic-build-20261013-1429.log, all exit 0):

scripts/bee-mxqsub -t 180m --overlay --makeflags -j96 -o ~/cosmic-build-$(date +%Y%m%d-%H%M).log \
    mtdev.be0 libwacom.be0 libinput.be0 seatd.be0 \
    pipewire.be0 wireplumber.be0 xwayland.be0 dav1d.be0 just.be0 xdg-desktop-portal.be0 \
    cosmic-comp.be0 cosmic-session.be0 cosmic-settings-daemon.be0 cosmic-randr.be0 \
    cosmic-icons.be0 cosmic-idle.be0 cosmic-applets.be0 cosmic-panel.be0 cosmic-bg.be0 \
    cosmic-osd.be0 cosmic-screenshot.be0 cosmic-settings.be0 xdg-desktop-portal-cosmic.be0 \
    cosmic-notifications.be0 cosmic-workspaces.be0 pop-launcher.be0 cosmic-files.be0 \
    cosmic-term.be0 cosmic-edit.be0 cosmic-player.be0 cosmic-app-library.be0 \
    cosmic-launcher.be0 cosmic-wallpapers.be0

Install

sudo bee update \
    mtdev-1.1.7-0 libwacom-2.20.0-0 libinput-1.32.0-0 seatd-0.9.3-0 \
    pipewire-1.6.9-0 wireplumber-0.5.18-0 xwayland-24.1.13-0 dav1d-1.5.4-0 \
    just-1.58.0-0 xdg-desktop-portal-1.22.1-0 \
    cosmic-comp-1.9.0-0 cosmic-session-1.9.0-0 cosmic-settings-daemon-1.9.0-0 \
    cosmic-randr-1.9.0-0 cosmic-icons-1.9.0-0 cosmic-idle-1.9.0-0 \
    cosmic-applets-1.9.0-0 cosmic-panel-1.9.0-0 cosmic-bg-1.9.0-0 \
    cosmic-osd-1.9.0-0 cosmic-screenshot-1.9.0-0 cosmic-settings-1.9.0-0 \
    xdg-desktop-portal-cosmic-1.9.0-0 cosmic-notifications-1.9.0-0 \
    cosmic-workspaces-1.9.0-0 pop-launcher-1.9.0-0 cosmic-files-1.9.0-0 \
    cosmic-term-1.9.0-0 cosmic-edit-1.9.0-0 cosmic-player-1.9.0-0 \
    cosmic-app-library-1.9.0-0 cosmic-launcher-1.9.0-0 cosmic-wallpapers-1.9.0-0

Check

bee install exits 0 even when it refuses a package, so check that all are installed:

for p in mtdev-1.1.7-0 libwacom-2.20.0-0 libinput-1.32.0-0 seatd-0.9.3-0 pipewire-1.6.9-0 wireplumber-0.5.18-0 xwayland-24.1.13-0 dav1d-1.5.4-0 just-1.58.0-0 xdg-desktop-portal-1.22.1-0 cosmic-{comp,session,settings-daemon,randr,icons,idle,applets,panel,bg,osd,screenshot,settings}-1.9.0-0 xdg-desktop-portal-cosmic-1.9.0-0 cosmic-{notifications,workspaces}-1.9.0-0 pop-launcher-1.9.0-0 cosmic-{files,term,edit,player,app-library,launcher,wallpapers}-1.9.0-0; do bee list --installed --exact $p.x86_64 >/dev/null 2>&1 || echo "missing: $p"; done

Test without changing LightDM

LightDM does not offer the session, so start COSMIC nested in a running X session (for example Xfce on a desktop host), from a terminal there:

$ mkdir -m 0700 -p /tmp/cosmic-test-$USER
$ env XDG_RUNTIME_DIR=/tmp/cosmic-test-$USER XDG_CURRENT_DESKTOP=COSMIC XDG_SESSION_TYPE=wayland \
    dbus-run-session -- cosmic-session
  • With DISPLAY set, cosmic-comp uses its X11 backend and opens a window (1280×800) with the whole session in it. If that fails, it falls back to its winit backend. Stop it with Ctrl+C in the terminal.
  • The private XDG_RUNTIME_DIR and dbus-run-session keep the test away from the running session. Otherwise cosmic-session would run systemctl --user set-environment XDG_SESSION_TYPE=wayland and start cosmic-session.target, which binds graphical-session.target and xdg-desktop-autostart.target, in the user manager of the X session. With the private directory these calls fail, and cosmic-session only logs that.
  • cosmic-session sends the output of the components to the journal: journalctl --user -f.
  • The settings are stored in ~/.config/cosmic; remove that directory to start over.

Test from a text console

Log in on a text console, for example Ctrl+Alt+F2, check that the login has a logind session on seat0, and start COSMIC:

loginctl show-session $XDG_SESSION_ID -p Seat -p Type -p Active   # Seat=seat0, Type=tty, Active=yes
echo $XDG_RUNTIME_DIR                                             # /run/user/<uid>
start-cosmic
  • Every console login then gets a logind session and starts user@<uid>.service, like SSH and LightDM logins already do.
  • With the proprietary NVIDIA driver, cosmic-comp needs kernel modesetting, so nvidia-drm has to be loaded with modeset=1 (append it to the insmod line in nvidiactl). Fixed in merge/pull request nvidiactl: Enable nvidia-drm kernel modesetting on desktops mxtools#600.

Test before installing

The packages can also be tried without installing them, by laying them over /usr with bubblewrap. This is what I (an LLM) did under Xvfb in an mxqi slot on hotelcalifornia:

R=/scratch/local2/$USER/cosmic-root
mkdir -p $R
for p in mtdev-1.1.7-0 libwacom-2.20.0-0 libinput-1.32.0-0 seatd-0.9.3-0 pipewire-1.6.9-0 wireplumber-0.5.18-0 xwayland-24.1.13-0 dav1d-1.5.4-0 just-1.58.0-0 xdg-desktop-portal-1.22.1-0 cosmic-{comp,session,settings-daemon,randr,icons,idle,applets,panel,bg,osd,screenshot,settings}-1.9.0-0 xdg-desktop-portal-cosmic-1.9.0-0 cosmic-{notifications,workspaces}-1.9.0-0 pop-launcher-1.9.0-0 cosmic-{files,term,edit,player,app-library,launcher,wallpapers}-1.9.0-0; do
    tar xjf /src/mariux/beeroot/packages/$p.x86_64.bee.tar.bz2 -C $R -P --transform 's|^/||' --exclude=CONTENT --exclude=BUILD --exclude=META
done
mkdir -m 0700 -p /tmp/cosmic-test-$USER
bwrap --dev-bind / / --overlay-src /usr --overlay-src $R/usr --tmp-overlay /usr \
    --setenv XDG_RUNTIME_DIR /tmp/cosmic-test-$USER --setenv XDG_CURRENT_DESKTOP COSMIC --setenv XDG_SESSION_TYPE wayland \
    -- dbus-run-session -- /usr/bin/cosmic-session

Result of that run:

  • cosmic-session starts cosmic-comp, Xwayland, cosmic-settings-daemon, cosmic-notifications, cosmic-panel, cosmic-app-library, cosmic-launcher (with pop-launcher and its plugins), cosmic-workspaces, cosmic-osd, cosmic-bg, cosmic-files-applet and cosmic-idle.
  • xdg-desktop-portal and xdg-desktop-portal-cosmic are activated over D-Bus. The document portal cannot mount its FUSE file system inside bubblewrap.
  • The default wallpaper (orion_nebula_nasa_heic0601a.jpg from cosmic-wallpapers) is drawn.

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
libinput uses mtdev to support multitouch protocol A devices. The
upstream site moved from bitmath.org to bitmath.se.

Built with scripts/bee-mxqsub in a chain with libinput and seatd (MXQ
job 60579546, private repository):

    === [1/6] mtdev.be0: 2026-10-01 17:45:08 beesh exited with 0
    [BEE]      pkg-file: .../packages/mtdev-1.1.7-0.x86_64.bee.tar.bz2

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
libinput 1.32.0 requires libwacom 0.27 or later for tablet
identification. The build system is now meson.

The soname changes from libwacom.so.2 to libwacom.so.9. The only
binary linking the old library is
/usr/lib/gnome-settings-daemon-3.0/libgsdwacom.so, which needs a
rebuild.

The tarball is an upstream release asset, mirrored to beehive.

Not built yet.

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The input library cosmic-comp, cosmic-settings and other parts of the
COSMIC desktop use. The Lua plugins are disabled, because they need Lua
5.4, and only 5.3 is installed.

Built with scripts/bee-mxqsub against mtdev (MXQ job 60579546), but
still with -Dlibwacom=false, before libwacom was updated:

    === [2/6] libinput.be0: 2026-10-01 17:45:28 beesh exited with 0
    [BEE]      pkg-file: .../packages/libinput-1.32.0-0.x86_64.bee.tar.bz2

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
cosmic-comp gets DRM and input devices from libseat. libseat talks to
systemd-logind here, so the seatd server is not built.

Built with scripts/bee-mxqsub (MXQ job 60579546):

    === [3/6] seatd.be0: 2026-10-01 17:45:32 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
xdg-desktop-portal-cosmic needs PipeWire for screen casting, and
cosmic-settings-daemon links it.

PulseAudio stays the sound server. The systemd user units, including
pipewire-pulse.socket, are installed but not enabled, and the ALSA and
JACK replacement libraries are not built, so nothing is rerouted.

The source tree has an autogen.sh, which only wraps meson, but bee
prefers it and passes autotools options meson does not understand:

    meson: error: unrecognized arguments: --datarootdir=/usr/share --docdir=/usr/share/doc/pipewire --exec-prefix=/usr

so BEE_BUILDTYPE=meson is set.

pw-cat (and pw-play, pw-record) does not compile against the installed
libsndfile 1.0.24 from 2011, and meson only checks for 1.0.20:

    ../source/src/tools/pw-cat.c:219:19: error: 'SF_FORMAT_MPEG_LAYER_I' undeclared here (not in a function)

so pw-cat and the sndfile support of filter-chain are disabled.

Built with scripts/bee-mxqsub (MXQ job 60579549):

    === [1/3] pipewire.be0: 2026-10-01 17:49:14 beesh exited with 0

The package also installs /etc/security/limits.d/25-pw-rlimits.conf,
which only grants limits to a group pipewire, and the GStreamer plugin
libgstpipewire.so.

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The session manager PipeWire needs to route streams, for example a
screen cast of xdg-desktop-portal-cosmic. Like PipeWire's, the systemd
user unit is installed, but not enabled.

The system Lua 5.3 is used, as otherwise meson downloads Lua through
subprojects/lua.wrap.

The top-level Makefile only wraps meson, but bee prefers it. The meson
options then end up as arguments of bee_dummy(), which trips over them,
and the configure step is skipped without an error:

    /bin/beesh: line 509: [: syntax error: `-Dsystem-lua=true' unexpected
    [BEE] action 'bee_configure' is not defined: skipping..

so BEE_BUILDTYPE=meson is set.

Built with scripts/bee-mxqsub against PipeWire 1.6.9 (MXQ job
60579550):

    === [1/2] wireplumber.be0: 2026-10-01 17:53:23 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Runs X11 applications in Wayland sessions such as COSMIC.

Xvfb is not built, as xorg-server.be0 ships it already, and the libei
support is disabled, as libei is not packaged.

Xwayland installs /usr/lib/xorg/protocol.txt and the manual page
Xserver(1), which xorg-server owns already. The protocol table of
xorg-server is a superset (it adds the DMX requests), so both files are
removed from the image.

Built with scripts/bee-mxqsub (MXQ job 60579551):

    === [1/1] xwayland.be0: 2026-10-01 17:55:48 beesh exited with 0
    removed '.../image/usr/lib/xorg/protocol.txt'
    removed '.../image/usr/share/man/man1/Xserver.1'

and the package contains:

    /usr/lib/pkgconfig/xwayland.pc
    /usr/share/applications/org.freedesktop.Xwayland.desktop
    /usr/share/man/man1/Xwayland.1
    /usr/bin/Xwayland

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
A command runner. The COSMIC desktop components describe their build
and installation in justfiles, so their recipes call
`just rootdir=${D} install` instead of repeating upstream's install
steps.

Like for the COSMIC components, the crates come from a second tarball
with the output of `cargo vendor --locked --versioned-dirs`, so the
build needs no network access.

Built with scripts/bee-mxqsub before the upload to beehive, with both
tarballs placed in the build root beforehand (MXQ job 60579552). The
uploaded files have the same md5 sums.

    $ grep exited just.log
    === [1/1] just.be0: 2026-10-01 17:58:15 beesh exited with 0

The package contains:

    /usr/bin/just
    /usr/share/man/man1/just.1
    /usr/share/bash-completion/completions/just

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The applets of the COSMIC panel: app list, audio, battery, Bluetooth,
input sources, network, notifications, power, status area, tiling,
time, workspaces and others. They are one binary, cosmic-applets, with
one symbolic link per applet.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579554); the package has 104 entries:

    === [1/5] cosmic-applets.be0: 2026-10-01 18:01:54 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The panel and dock of the COSMIC desktop.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579554); the package has 46 entries:

    === [2/5] cosmic-panel.be0: 2026-10-01 18:03:41 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Draws the desktop background of the COSMIC desktop.

It is built without the default feature avif, as AVIF images would need
dav1d, which is not packaged. The default configuration names
/usr/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg from
cosmic-wallpapers, which is not packaged either.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579554); the package has 2 entries:

    === [3/5] cosmic-bg.be0: 2026-10-01 18:04:58 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
On-screen displays and the polkit agent of the COSMIC desktop.

The path of polkit-agent-helper-1 is compiled in, and is
/usr/lib/polkit-1/polkit-agent-helper-1 here instead of upstream's
default /usr/libexec/polkit-agent-helper-1.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579554); the package has 1 entries:

    === [4/5] cosmic-osd.be0: 2026-10-01 18:06:26 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Takes screenshots in the COSMIC desktop, through
xdg-desktop-portal-cosmic.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579554); the package has 9 entries:

    === [5/5] cosmic-screenshot.be0: 2026-10-01 18:07:44 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The Wayland compositor of the COSMIC desktop, based on Smithay. It gets
DRM and input devices through libseat and libinput, and starts Xwayland
for X11 clients.

Only the install target of the Makefile is used. Its
install-bare-session target would also install cosmic.desktop and
cosmic-session.target, which cosmic-session ships.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579553); the package has 3 entries:

    === [1/6] cosmic-comp.be0: 2026-10-01 18:06:52 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Starts and supervises the components of a COSMIC session. It installs
/usr/share/wayland-sessions/cosmic.desktop, which runs start-cosmic.

LightDM is configured with sessions-directory=/usr/share/xsessions, so
it does not offer the session yet.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579553); the package has 6 entries:

    === [2/6] cosmic-session.be0: 2026-10-01 18:07:43 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Applies the COSMIC settings, and handles brightness, volume and media
keys. It links PipeWire.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579553); the package has 3 entries:

    === [3/6] cosmic-settings-daemon.be0: 2026-10-01 18:09:23 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Configures the displays of the COSMIC desktop, and is used by
cosmic-settings and cosmic-osd.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579553); the package has 1 entries:

    === [4/6] cosmic-randr.be0: 2026-10-01 18:09:49 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The icon theme Cosmic of the COSMIC desktop. Nothing is compiled, the
recipe only runs upstream's `just install`.

Built with scripts/bee-mxqsub against just 1.58.0 (MXQ job 60579553);
the package has 673 files:

    === [5/6] cosmic-icons.be0: 2026-10-01 18:09:56 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
Blanks the screens and locks the COSMIC session when idle.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579553); the package has 1 entries:

    === [6/6] cosmic-idle.be0: 2026-10-01 18:10:36 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The settings application of the COSMIC desktop.

It is built with the default features except avif, as AVIF images would
need dav1d, which is not packaged.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579555); the package has 263 entries:

    === [1/5] cosmic-settings.be0: 2026-10-01 18:02:40 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The XDG desktop portal backend of the COSMIC desktop, for example for
screenshots and screen casting with PipeWire.

It is a backend for xdg-desktop-portal, which gets a recipe of its own.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579555); the package has 8 entries:

    === [2/5] xdg-desktop-portal-cosmic.be0: 2026-10-01 18:05:18 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The notification daemon of the COSMIC desktop.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579555); the package has 1 entries:

    === [3/5] cosmic-notifications.be0: 2026-10-01 18:07:33 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The workspace and window overview of the COSMIC desktop. The upstream
repository is called cosmic-workspaces-epoch, the binary and the package
cosmic-workspaces.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579555); the package has 3 entries:

    === [4/5] cosmic-workspaces.be0: 2026-10-01 18:09:20 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The launcher service cosmic-launcher searches with, and its plugins
(calculator, desktop entries, files, terminal, web and others). Each
plugin is a relative symbolic link to /usr/bin/pop-launcher below
/usr/lib/pop-launcher/plugins.

The upstream repository is github.com/pop-os/launcher.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579555); the package has 34 entries:

    === [5/5] pop-launcher.be0: 2026-10-01 18:11:29 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The file manager of the COSMIC desktop, with its panel applet and
thumbnailer.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579556); the package has 13 entries:

    === [1/6] cosmic-files.be0: 2026-10-01 18:03:48 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The terminal emulator of the COSMIC desktop.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579556); the package has 10 entries:

    === [2/6] cosmic-term.be0: 2026-10-01 18:06:10 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The text editor of the COSMIC desktop.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579556); the package has 10 entries:

    === [3/6] cosmic-edit.be0: 2026-10-01 18:08:38 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The media player of the COSMIC desktop, based on GStreamer, with a
thumbnailer for videos.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579556); the package has 11 entries:

    === [4/6] cosmic-player.be0: 2026-10-01 18:10:25 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The application library of the COSMIC desktop.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579556); the package has 4 entries:

    === [5/6] cosmic-app-library.be0: 2026-10-01 18:12:12 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The application launcher of the COSMIC desktop, a frontend to
pop-launcher.

Built from the tag epoch-1.9.0 with rustc 1.97.0. The crates come from a
second tarball with the output of `cargo vendor --locked
--versioned-dirs`, so cargo runs with --frozen and needs no network
access.

Built with scripts/bee-mxqsub against the packages of this branch (MXQ
job 60579556); the package has 4 entries:

    === [6/6] cosmic-launcher.be0: 2026-10-01 18:13:58 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The D-Bus frontend of the XDG desktop portals, which forwards requests,
for example for screenshots or screen casts, to the backend of the
desktop, such as xdg-desktop-portal-cosmic.

The bundled subprojects libglnx and gvdb are sources. PipeWire 1.6.9 is
found, so the screen cast portal is built. Geoclue and Flatpak are not
packaged, so the location portal and the Flatpak interfaces are not
built. The documentation and the manual pages are disabled, as they
need Sphinx and rst2man.

Built with scripts/bee-mxqsub against PipeWire 1.6.9, with the tarball
placed in the build root before the upload to beehive (MXQ job
60579558):

    === [1/2] xdg-desktop-portal.be0: 2026-10-01 18:30:32 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
The eleven wallpapers of the COSMIC desktop, installed to
/usr/share/backgrounds/cosmic. The default configuration of cosmic-bg
names orion_nebula_nasa_heic0601a.jpg from it.

Upstream stores the images with Git LFS. GitHub's archive of the tag
contains the images themselves, not the LFS pointer files:

    $ file orion_nebula_nasa_heic0601a.jpg
    JPEG image data, progressive, precision 8, 3840x2160, components 3

The licenses of the images (CC BY 4.0, ESA/Hubble, NASA terms) are
listed per file in the upstream README.md.

Built with scripts/bee-mxqsub, with the tarball placed in the build
root before the upload to beehive (MXQ job 60579559):

    === [1/1] cosmic-wallpapers.be0: 2026-10-01 18:31:46 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
dav1d is the AV1 decoder of VideoLAN. cosmic-settings and cosmic-bg need
it to display AVIF wallpapers: their `avif` feature enables the image
crate's `avif-native`, whose dav1d-sys 0.8.3 probes for it with
pkg-config:

    [package.metadata.system-deps.dav1d]
    name = "dav1d"
    version = "1.3.0"

bee passes no `--buildtype`, so meson would compile it with `-O0 -g`,
and the `trim_dsp` default (`if-release`) only drops the redundant C DSP
functions in release builds, so build with `--buildtype=release`. The
x86 assembly is built with nasm 2.14 from /usr, the minimum dav1d
accepts:

    [97/134] /usr/bin/nasm -f elf64 [...] ../source/src/x86/itx16_sse.asm [...]

checkasm is a wrap subproject, which `--wrap-mode=nofallback` skips, and
it is optional (`required: false`), so the asm self-tests are not built.

    -rw-r--r-- Apmenzel/Apmenzel     205 2026-10-01 18:40 /usr/lib/pkgconfig/dav1d.pc
    lrwxrwxrwx Apmenzel/Apmenzel       0 2026-10-01 18:41 /usr/lib/libdav1d.so.7 -> libdav1d.so.7.0.0
    -rwxr-xr-x Apmenzel/Apmenzel   80944 2026-10-01 18:41 /usr/bin/dav1d

The tarball still has to be mirrored to beehive.

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
With dav1d packaged, build cosmic-bg with its default features, which are
only `avif` (`image/avif-native`). The binary now links the decoder:

    $ readelf -d usr/bin/cosmic-bg | grep dav1d
     0x0000000000000001 (NEEDED)             Shared library: [libdav1d.so.7]

Built on MXQ (job 60579563) after dav1d-1.5.4-0 in one overlay chain:

    === [2/3] cosmic-bg.be0: 2026-10-01 18:54:14 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
With dav1d packaged, build cosmic-settings with its default features
instead of listing them all except `avif`, so the wallpaper page can
show AVIF images. The binary now links the decoder:

    $ readelf -d usr/bin/cosmic-settings | grep dav1d
     0x0000000000000001 (NEEDED)             Shared library: [libdav1d.so.7]

Built on MXQ (job 60579563) after dav1d-1.5.4-0 in one overlay chain:

    === [3/3] cosmic-settings.be0: 2026-10-01 18:57:00 beesh exited with 0

Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
@pmenzel
Copy link
Collaborator Author

I tested on maleficent (amdgpu):

$ mkdir -m 0700 -p /tmp/cosmic-test-$USER
$ env XDG_RUNTIME_DIR=/tmp/cosmic-test-$USER XDG_CURRENT_DESKTOP=COSMIC XDG_SESSION_TYPE=wayland dbus-run-session -- cosmic-session

The first startup was quite slow, but afterward it worked.

20261013--cosmic-journalctl--user-b.txt

Logging out and re-running, just the error below as printed on the terminal:

Error: EventLoop(ExitFailure(1))R iced_winit::platform_specific::wayland::event_loop: SCTK failed to send Control::AboutToWait. TrySendError { kind: Disconnected }ead from socketad from socketeedeskop.RealtimeKit1 was not provided by any .

@donald
Copy link
Collaborator

Wow, our leap to Wayland? How many bytes get installed?

@donald
Copy link
Collaborator

Donald Buczek (donald) commented Oct 14, 2026 •

bee install exits 0 even when it refuses a package

We should fix the bee bug!

@donald
Copy link
Collaborator

Donald Buczek (donald) commented Oct 14, 2026 •

sudo BEE_REPOSITORY_PREFIX=/src/mariux/beeroot bee update ...

Isn't the repository path the default for UID 0 ?

@pmenzel
Copy link
Collaborator Author

sudo BEE_REPOSITORY_PREFIX=/src/mariux/beeroot bee update ...

Isn't the repository path the default for UID 0 ?

It is. Removed from the merge/pull request description.

@pmenzel
Copy link
Collaborator Author

bee install exits 0 even when it refuses a package

We should fix the bee bug!

mariux64/bee#75

Will do it later.

Paul Menzel (pmenzel) added a commit that referenced this pull request Oct 14, 2026
…-26.2.4

Update LLVM to 23.1.3 and Mesa to 26.2.4, replace libclc with mesa-libclc

AI disclaimer: This merge/pull request was mainly generated by claude-opus-5.5 and reviewed and tested by @pmenzel.

Built with:

    scripts/bee-mxqsub -t 4h llvm.be0 clang.be0 compiler-rt.be0 lld.be0 spirv-llvm-translator.be0 mesa-libclc.be0 mesalib.be0

Install/update/remove with:

    sudo bee update \
        llvm-23.1.3-0 clang-23.1.3-0 compiler-rt-23.1.3-0 lld-23.1.3-0 \
        spirv-llvm-translator-23.1.2-0 mesa-libclc-22.1.8.3-0 mesalib-26.2.4-0
    sudo bee remove libclc-22.1.8-0.x86_64

## Test

The two new scripts in `scripts/smoke-tests/` check the installed packages, or, with `--prefix`, package archives or image directories mounted read-only over `/usr` in a user namespace, so without installing and without root:

    scripts/smoke-tests/llvm-smoke-test
    scripts/smoke-tests/mesa-smoke-test

    P=/src/mariux/beeroot/packages
    TMPDIR=/dev/shm scripts/smoke-tests/llvm-smoke-test \
        --prefix $P/llvm-23.1.3-0.x86_64.bee.tar.bz2 --prefix $P/clang-23.1.3-0.x86_64.bee.tar.bz2 \
        --prefix $P/compiler-rt-23.1.3-0.x86_64.bee.tar.bz2 --prefix $P/lld-23.1.3-0.x86_64.bee.tar.bz2 \
        --prefix $P/spirv-llvm-translator-23.1.2-0.x86_64.bee.tar.bz2
    TMPDIR=/dev/shm scripts/smoke-tests/mesa-smoke-test \
        --prefix $P/llvm-23.1.3-0.x86_64.bee.tar.bz2 --prefix $P/clang-23.1.3-0.x86_64.bee.tar.bz2 \
        --prefix $P/spirv-llvm-translator-23.1.2-0.x86_64.bee.tar.bz2 \
        --prefix $P/mesa-libclc-22.1.8.3-0.x86_64.bee.tar.bz2 --prefix $P/mesalib-26.2.4-0.x86_64.bee.tar.bz2

### machdoch (Intel CometLake GT2), packages of this branch via `--prefix`

Run before the OpenGL ES check went over all EGL devices, so its lines still say just `hardware`.

    OK    clang 23.1.3, llvm-config 23.1.3, ld.lld 23.1.3, llvm-spirv (libLLVM) 23.1
    OK    runtime directory /usr/lib/clang/23/lib/linux holds 76 compiler-rt files
    OK    C
    OK    C++ with exceptions
    OK    lld links and runs, .comment names LLD 23
    OK    ThinLTO with lld
    OK    compiler-rt builtins (--rtlib=compiler-rt)
    OK    ASan reports heap-buffer-overflow
    OK    UBSan reports signed integer overflow
    OK    TSan reports data race
    OK    profiling and coverage: compiler-rt profile, llvm-profdata, llvm-cov
    OK    OpenCL C to SPIR-V and back with llvm-spirv, spirv-val accepts it
    PASS (0 failed, 0 warned)

    OK    7 Mesa libraries resolve their shared libraries, using libLLVM.so.23.1, libLLVMSPIRVLib.so.23.1, libclang-cpp.so.23.1
    OK    mesa-libclc provides its SPIR-V libraries in /usr/share/mesa-clc
    OK    OpenGL ES (software) draws a shaded triangle: llvmpipe (LLVM 23.1.3, 256 bits), OpenGL ES 3.2 Mesa 26.2.4
    OK    OpenGL ES (hardware) draws a shaded triangle: Mesa Intel(R) UHD Graphics (CML GT2), OpenGL ES 3.2 Mesa 26.2.4
    OK    GLX on Xvfb: llvmpipe (LLVM 23.1.3, 256 bits), 4.6 (Core Profile) Mesa 26.2.4
    OK    Vulkan libvulkan_intel.so: Intel(R) UHD Graphics (CML GT2), Intel open-source Mesa driver Mesa 26.2.4, Vulkan 1.4.354, device created
    OK    Vulkan libvulkan_radeon.so: loads, drives no GPU of this host
    OK    OpenCL Mesa Intel(R) UHD Graphics (CML GT2) (OpenCL 3.1) runs a kernel calling libclc builtins
    OK    OpenCL llvmpipe (LLVM 23.1.3, 256 bits) (OpenCL 3.1) runs a kernel calling libclc builtins
    PASS (0 failed, 0 warned)

So mesa-libclc 22.1.8.3, libclc 22 code built with clang 23, works.

### machdoch, installed master (LLVM 22.1.8, mesalib 26.2.2, libclc 22.1.8)

For comparison, master fails both: no sanitizer links, as compiler-rt 22.1.8-0 is outside clang’s resource directory, and **OpenCL is broken on master**, as rusticl gets upstream libclc:

    FAIL  no compiler-rt runtimes in clang's runtime directory (clang -print-runtime-dir: (runtime dir is not present))
    FAIL  ASan: clang failed: /usr/bin/ld: cannot find /usr/lib/clang/22/lib/x86_64-unknown-linux-gnu/libclang_rt.asan_static.a: No such file or directory
    WARN  OpenCL: rusticl uses upstream libclc, not Mesa's fork (install mesa-libclc)
    FAIL  OpenCL Mesa Intel(R) UHD Graphics (CML GT2) (OpenCL 3.1): build failed: Internal compilation error: nir_shader not fully linked
    FAIL  OpenCL llvmpipe (LLVM 22.1.8, 256 bits) (OpenCL 3.1): build failed: Internal compilation error: nir_shader not fully linked

### maleficent (AMD Radeon Pro WX 5100 and Intel HD Graphics 630), installed

Run by @pmenzel; this covers radeonsi and RADV, and OpenGL ES on both GPUs:

    OK    7 Mesa libraries resolve their shared libraries, using libLLVM.so.23.1, libLLVMSPIRVLib.so.23.1, libclang-cpp.so.23.1
    OK    mesa-libclc provides its SPIR-V libraries in /usr/share/mesa-clc
    OK    OpenGL ES (hardware, /dev/dri/renderD129) draws a shaded triangle: Mesa Intel(R) HD Graphics 630 (KBL GT2), OpenGL ES 3.2 Mesa 26.2.4
    OK    OpenGL ES (hardware, /dev/dri/renderD128) draws a shaded triangle: AMD Radeon Pro WX 5100 Graphics (radeonsi, polaris10, ACO, DRM 3.64, 6.18.51.mx64.498), OpenGL ES 3.2 Mesa 26.2.4
    OK    OpenGL ES (software) draws a shaded triangle: llvmpipe (LLVM 23.1.3, 256 bits), OpenGL ES 3.2 Mesa 26.2.4
    OK    GLX on Xvfb: llvmpipe (LLVM 23.1.3, 256 bits), 4.6 (Core Profile) Mesa 26.2.4
    OK    Vulkan libvulkan_intel.so: Intel(R) HD Graphics 630 (KBL GT2), Intel open-source Mesa driver Mesa 26.2.4, Vulkan 1.4.354, device created
    OK    Vulkan libvulkan_radeon.so: AMD Radeon Pro WX 5100 Graphics (RADV POLARIS10), radv Mesa 26.2.4, Vulkan 1.4.354, device created
    OK    OpenCL AMD Radeon Pro WX 5100 Graphics (radeonsi, polaris10, ACO, DRM 3.64, 6.18.51.mx64.498) (OpenCL 3.1) runs a kernel calling libclc builtins
    OK    OpenCL Mesa Intel(R) HD Graphics 630 (KBL GT2) (OpenCL 3.1) runs a kernel calling libclc builtins
    OK    OpenCL llvmpipe (LLVM 23.1.3, 256 bits) (OpenCL 3.1) runs a kernel calling libclc builtins
    PASS (0 failed, 0 warned)

### sigusr2 (NVIDIA proprietary driver), installed

Updated by @pmenzel: Xfce, COSMIC (from #3476) and Firefox still work. With NVIDIA’s driver that exercises the toolchain-built userland, not Mesa’s GPU drivers.

### overcommit

- ASan/TSan do not run on hosts with `vm.overcommit_memory=2`, the MXQ nodes like hotelcalifornia and the servers; `llvm-smoke-test` only links them there and warns.

## Notes

- Unrelated and already broken before this PR: `/usr/local/qt6/bin/qdoc` still needs `libclang.so.18.1` and `libLLVM.so.18.1`, and needs a qt6 rebuild.
Sign in to join this conversation on GitHub.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants